package com.qingcloud.fexecutor.base.mapper;

import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Options;

import java.util.List;

/**
 * 生成insert语句时，主键也会一起生成，用于insert时保存主键的场景
 *
 * @author wangjinnan
 */
@tk.mybatis.mapper.annotation.RegisterMapper
public interface InsertWithIdMapper<T> {

    /**
     * 批量插入，保留对象中的ID主键，也就是记录数据的ID要自己在应用中提前设置
     *
     * @param recordList 数据列表
     * @return 保存的数据条数
     */
    @Options(useGeneratedKeys = true)
    @InsertProvider(type = InsertWithIdProvider.class, method = "dynamicSQL")
    int insertListWithId(List<T> recordList);

    /**
     * 保存单条数据，保留对象中的ID主键，也就是记录数据的ID要自己在应用中提前设置
     *
     * @param record 数据
     * @return 保存的数据条数
     */
    @Options(useGeneratedKeys = true)
    @InsertProvider(type = InsertWithIdProvider.class, method = "dynamicSQL")
    int insertWithId(T record);

}
